package com.gzhryc.jdbc;

import com.gzhryc.jdbc.models.Parameters;

/**
 * SQL查询对象
 * @author 张浩
 * @version 1.0
 */
public class Query {

	/** 查询语句 */
	volatile StringBuffer sql;
	
	/** 查询的条件参数 */
	volatile Parameters params;
	
	/** 起始的数据位置 */
	volatile Long startNum;
	
	/** 当前页数 */
	volatile Integer pageNo;
	
	/** 一页显示个数 */
	volatile Integer pageLimit;
	
	public Query(){
		this("");
	}
	
	public Query(String sql){
		this.sql = new StringBuffer(sql);
		this.params = new Parameters();
	}
	
	/**
	 * 获取查询语句
	 * @return
	 */
	public String getSql() {
		return sql.toString();
	}

	/**
	 * 设置查询语句
	 * @param sql
	 */
	public void setSql(String sql) {
		this.sql = new StringBuffer(sql);
	}
	
	public Parameters getParams() {
		return params;
	}

	public void setParams(Parameters params) {
		this.params = params;
	}
	
	/**
	 * 是否进行分页
	 * @return
	 */
	public boolean isPaging(){
		return pageLimit != null && (startNum !=null || pageNo != null);
	}
	
	public Long getStartNum() {
		if(startNum == null && pageNo != null && pageLimit != null){
			return (long)(pageNo - 1) * pageLimit;
		}
		return startNum;
	}

	
	public void setStartNum(Long startNum) {
		this.startNum = startNum;
	}

	
	public Integer getPageNo() {
		return pageNo;
	}

	
	public void setPageNo(Integer pageNo) {
		this.pageNo = pageNo;
	}

	
	public Integer getPageLimit() {
		return pageLimit;
	}

	
	public void setPageLimit(Integer pageLimit) {
		this.pageLimit = pageLimit;
	}
	
	public void appendSql(String sql){
		this.sql.append(sql);
	}
}

